package com.ciei.dpagm.common.service;

import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import java.io.IOException;

/**
 * @author fangnuozhou
 * @date 2021/03/16
 */
public class BaseWebSocketServer {

    /**
     * 与某个客户端的连接会话，需要通过它来给客户端发送数据
     * */
    protected Session session;

    /**
     * 收到客户端消息后调用的方法
     * @param message 客户端发送过来的消息
     * @param session
     */
    @OnMessage
    public void onMessage(String message, Session session) {
        if ("helloMsg".equals(message)) {
            // 回复心跳消息
            sendMessage("helloMsg");
        }
    }

    /**
     * 发生错误时调用
     * @param session
     * @param error
     */
    @OnError
    public void onError(Session session, Throwable error) {
        error.printStackTrace();
    }

    /**
     * 发送消息
     * @param message
     */
    public synchronized void sendMessage(String message){
        try {
            this.session.getBasicRemote().sendText(message);
        } catch (IllegalStateException | IOException e) {
            //关闭后前端会自动重连
            try {
                this.session.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            //e.printStackTrace();
        }
    }
}
